package br.com.ds3.dao;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;

import br.com.caelum.vraptor.ioc.Component;
import br.com.ds3.model.Grupo;
import br.com.ds3.util.DS3Util;

@Component
public class GrupoDAO extends GenericDAO<Grupo> {
	private final Long TAMANHO_PAGINA = new Long(10);

	@Override
	public Class<Grupo> getModelClass() {
		return Grupo.class;
	}
	
    private Criteria createCriteriaPesquisa(String identificacao) {
        Criteria criteria = getSession().createCriteria(getModelClass());
        
        if (!DS3Util.isEmtpy(identificacao)) {
        	criteria.add(Restrictions.like("identificacao", identificacao.toUpperCase() + "%"));
        }
        
        return criteria;
    }
    
    public Long countPaginas(String identificacao) {
    	Criteria criteria = createCriteriaPesquisa(identificacao);
    	
    	Long quantidadeRegistros = countCriteria(criteria);
    	
    	Long paginas = countPaginas(quantidadeRegistros, TAMANHO_PAGINA);
    	
    	return paginas;
    }
	
	public List<Grupo> pesquisa(String identificacao, Long pagina) {
		Criteria criteria = createCriteriaPesquisa(identificacao);
		criteria.addOrder(Order.asc("identificacao"));
		return executaCriteria(criteria, pagina, TAMANHO_PAGINA);		
	}
}
